const { EventEmitter } = require('events'); // 引入EventEmitter是一个构造函数

const myEmitter = new EventEmitter();//创建一个事件处理对象: 1.注册事件 2.触发事件 

// 注册事件
myEmitter.on('eventTest', () => {  // 注册事件: 事件名称,事件处理函数
    console.log('事件触发');
});

// 触发事件
myEmitter.emit('eventTest');// 触发事件: 事件名称


function eventTestFunc(a, b) {
    console.log(a, b);
}

// 注册事件:传入参数的事件处理函数
myEmitter.on('eventTest2', eventTestFunc);

// 触发事件: 传入参数
myEmitter.emit('eventTest2', 1, 2);


// 关闭事件监听 , 需要传入事件名称和事件处理函数,如果使用箭头函数的话,则没有办法关闭,需要有具名函数
myEmitter.off('eventTest2', eventTestFunc);

// 触发事件: 传入参数,由于被关闭了,所以不会触发
myEmitter.emit('eventTest2', 1, 2);


//注册只触发一次的事件
myEmitter.once('eventTest3', () => {
    console.log('事件触发一次');
});

// 触发事件: 传入参数,由于只触发一次,所以不会触发
myEmitter.emit('eventTest3');
myEmitter.emit('eventTest3');





